
package de.hdu.tennis.dao;

import static org.junit.Assert.*;

import org.apache.log4j.Logger;

import de.hdu.tennis.model.Bewertung;
import de.hdu.tennis.model.Tennisplatz;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
 * Testclass for BewertungDao
 * @see BewertungDao
 * @author Lilli Kardapolzew, Katharina Weber, Carolina Hirtreiter
 */
public class BewertungDaoTest extends AbstractDataAccessTest {
	
	
	
	private String tableBewertung = "tbl_bewertung";
	private static Logger log = Logger.getLogger(BewertungDaoTest.class);
	
	public static void setLog(Logger log) {
		log = log;
	}
	
	
	private String tableTennisplatz = "tbl_tennisplatz";
	private static Logger log2 = Logger.getLogger(TennisplatzDaoTest.class);
	
//	public static void setLog(Logger logg) {
//		log2 = logg;
//	}
//	
	private BewertungDao bewertungDao;
	private TennisplatzDao tennisplatzDao;
	
	private Bewertung bewertung1;
	private Bewertung bewertung2;
	private Tennisplatz tennisplatz3;
	private Tennisplatz tennisplatz4;
	private Tennisplatz tennisplatz5;
	
	
	
	
	public BewertungDao getBewertungDao(){
		return bewertungDao;
	}
	
	
	public void setBewertungDao(BewertungDao bewertungDao) {
		this.bewertungDao = bewertungDao;
	}
	
	/**
     * @return the tennisplatzDao
     */
    public TennisplatzDao getTennisplatzDao() {
        return tennisplatzDao;
    }

    /**
     * @param tennisplatzDao the tennisplatzDao to set
     */
    public void setTennisplatzDao(TennisplatzDao tennisplatzDao) {
        this.tennisplatzDao = tennisplatzDao;
    }
	
	public BewertungDaoTest(){
		
	}
	@Override
	protected void onSetUpBeforeTransaction() throws Exception{
//		log.info("Initialisierung BewertungObjekte");
		
	String[] tables = {  tableBewertung };
	deleteFromTables(tables);
	
	
	tennisplatz3 = new Tennisplatz();
    tennisplatz3.setBelegt(false);
    tennisplatz3.setZustand("Ok");
    tennisplatz3.setName("Platz3");
       

    // tennisplatz3 neu belegen um Zugriff auf ID zu erhalten
    tennisplatz3 = tennisplatzDao.save(tennisplatz3);
    
    bewertung1 = new Bewertung();
    bewertung1.setTennisplatz(tennisplatz3);
    bewertung1.setCount(5);
    bewertung1.setComment("Super Zustand");
    
    bewertung2 = new Bewertung();
    bewertung2.setTennisplatz(tennisplatz3);
    bewertung2.setCount(4);
    bewertung2.setComment("Zustand ist OK");
    
	
	}

	
	/**
     * Test of save method, of class BewertungDao.
     */
    @SuppressWarnings("deprecation")
	public void testSave() throws Exception {
    	//this.onSetUpBeforeTransaction();
        logger.info("Save");
        getBewertungDao().save(bewertung1, 1);
        assertEquals("Die Tabelle muss einen Eintrag enthalten", 1, countRowsInTable(tableBewertung));
    }

    /**
     * Test of findAll method, of class BewertungDao.
     */
    @SuppressWarnings("deprecation")
	public void testFindAll() throws Exception {
        logger.info("FindAll");
        getBewertungDao().save(bewertung1,1);
        getBewertungDao().save(bewertung2,1);
        assertEquals("Es m�ssen 2 Bewertungen vorhanden sein", 2, bewertungDao.findAll().size());
        
        
           	
    }
    
  
  
    
/*    *//**
     * Test of delete method, of class TennisplatzDao.
     *//*
    
    @SuppressWarnings("deprecation")
	public void testDelete() throws Exception {
        logger.info("delete");
        tennisplatzDao.delete(tennisplatz3);
        

    }
*/
	
    
    
}
















